<?php

	
class Sucursal //extends Persona
{
	var $id_sucursal;
	var $id_tabla;
	var $nombre;
	var $direccion;
	var $telefono;
	var $prefijo;
	var $activo=1;
	
	function __construct()
	{
		$this->setIdTabla("sucursales");
		
		$this->direccion = new Direccion();
		$this->telefono= new Telefono();
		
		switch(func_num_args())
		{
			case 1:	$this->setId( func_get_arg( 0 ) );
					$this->cargar();
					break;
		}
		
	}
	
	function cargar()
	{
		$con=new Conexion();
		$we="SELECT r.id_sucursal, r.nombre,r.activo,r.prefijo, r.direccion, r.colonia, r.ciudad,r.estado,r.cp, t.tel_casa, t.tel_trabajo, t.tel_cel
			FROM (
				SELECT s.id_sucursal, s.activo, s.prefijo,s.nombre,d.direccion,d.colonia, d.ciudad,d.estado,d.cp
				FROM sucursales AS s
				LEFT JOIN direcciones d ON s.id_sucursal = d.id_propietario
				and d.tabla='".$this->getIdTabla()."'
			) AS r
			LEFT JOIN telefonos t ON r.id_sucursal = t.id_propietario
			AND t.tabla = '".$this->getIdTabla()."' 
			WHERE r.id_sucursal = '".$this->getId()."';";
		
		$con->ejecutar($we);
		
		if($con->traerFilaPorNombre())
		{
			$this->setNombre($con->get("nombre"));
			$this->setPrefijo($con->get("prefijo"));
			$this->setActivo($con->get("activo"));
			$this->setDireccion($con->get("direccion"),$con->get("colonia"),$con->get("ciudad"),$con->get("estado"),$con->get("cp"));
			$this->setTelefono($con->get("tel_casa"),$con->get("tel_trabajo"),$con->get("tel_cel"));
		}
		$con->cerrar();
	}
	
	function insertar(){
		$con=new Conexion();
		#agregar
		$con->ejecutar("INSERT INTO sucursales VALUES (null,'".$this->getPrefijo()."','".$this->getNombre()."',".$this->getActivo().")");

		$con->ejecutar("select max(id_sucursal) from sucursales");
		$this->setId($con->resultado(0,0));
		$this->setLlaves();
		
		$this->direccion->insertar();
		$this->telefono->insertar();
	}
	function setLlaves(){
		$this->direccion->setIdPropietario($this->getId());
		$this->direccion->setIdTabla($this->getIdTabla());
		
		$this->telefono->setIdPropietario($this->getId());
		$this->telefono->setIdTabla($this->getIdTabla());
	}
	
	function agregar(){
		/*	slt_prefijo	EP
			txt_ciudad	6
			txt_colonia	4
			txt_cp	5
			txt_dir	2
			txt_estado	7
			txt_fax	46446464
			txt_nombre	24
			txt_tel_casa 53
			txt_tel_trabajo	35*/
			
		$this->setNombre($_POST['txt_nombre']);
		$this->setPrefijo($_POST['slt_prefijo']);
		$this->setDireccion($_POST['txt_dir'],$_POST['txt_colonia'],$_POST['txt_ciudad'],$_POST['txt_estado'],$_POST['txt_cp']);
		$this->setTelefono($_POST['txt_tel_casa'],$_POST['txt_tel_trabajo'],$_POST['txt_fax']);

		$this->insertar();		
		return "{success:true}";
	}
	
	function editar(){			
		$this->editarNombre($_POST['txt_nombre']);
		$this->editarPrefijo($_POST['slt_prefijo']);
		$this->setLlaves();
		
		$this->editarDireccion($_POST['txt_dir'],$_POST['txt_colonia'],$_POST['txt_ciudad'],$_POST['txt_estado'],$_POST['txt_cp']);
		$this->editarTelefono($_POST['txt_tel_casa'],$_POST['txt_tel_trabajo'],$_POST['txt_fax']);

		return "{success:true}";
	}
	function eliminar()
	{
		#eliminar al usuario
		$this->editarActivo(0);
		return "{success: true }";
	}


	
	function toObjeto()
	{
		$o = array(
			"id"=> $this->getId(),
			"slt_prefijo"=> $this->getPrefijo(),
			"txt_ciudad"=> $this->direccion->getCiudad(),
			"txt_colonia"=> $this->direccion->getColonia(),
			"txt_cp"=> $this->direccion->getCp(),
			"txt_dir"=> $this->direccion->getDireccion(),			
			"txt_estado"=> $this->direccion->getEstado(),
			"txt_fax"=> $this->telefono->getTelefonoCel(),			
			"txt_tel_casa"=> $this->telefono->getTelefonoCasa(),
			"txt_tel_trabajo"=> $this->telefono->getTelefonoTrabajo(),
			"txt_nombre"=> $this->getNombre(),
		);

		return $o;
	}
	function toJson()
	{
		if($this->getId()=="-1")//si el cliente no existe
			return false;
		
		return json_encode($this->toObjeto());		
	}
	function toForm()
	{
		$obj=$this->toJson();
		if(!$obj){
			return '{"success":false,"error":"La sucursal no existe"}';
		}
		else{
			/*$o = array(
				"success"=>true,
				"data"=>$this->toObjeto()
			);*/
			return '{"success":true,"data":'.$obj.',"cargar":true}';
		}					
		//return json_encode($o);
	}
	

	/*funciones SET y GET*/
	
	#id persona
	function setId($_x){$this->id_sucursal=$_x;}
	function setPrefijo($f){$this->prefijo=$f;}
	function setActivo($f){$this->activo=$f;}
	function getPrefijo(){return $this->prefijo;}
	function getId(){return $this->id_sucursal;}
	function getActivo(){return $this->activo;}
	#nombre
	function setNombre($_x){$this->nombre=$_x;}
	function getNombre(){return $this->nombre;}
	function setIdTabla($_x){$this->id_tabla=$_x;}
	function getIdTabla(){return $this->id_tabla;}

	
	
	/*Definicion de las clases abstractas*/
	function setDireccion($a,$colo,$ci,$edo,$cp){
		$this->direccion->setDireccion($a);
		$this->direccion->setColonia($colo);
		$this->direccion->setCiudad($ci);
		$this->direccion->setEstado($edo);
		$this->direccion->setCp($cp);
	}
	function getDireccion(){
		return $this->direccion;
	}

	function setTelefono($tc,$tt,$tce){
		$this->telefono->setTelefonoCasa($tc);
		$this->telefono->setTelefonoTrabajo($tt);
		$this->telefono->setTelefonoCel($tce);
	}
	function getTelefono(){return $this->telefono->toString();}
	function editarDireccion($a,$colo,$ci,$edo,$cp){
		//echo $a ." != ". $this->direccion->getDireccion();
		//echo "+".$a." - ".$colo." - ".$ci." - ".$edo." - ".$cp;
		$this->direccion->editar($a,$colo,$ci,$edo,$cp);
	}

	function editarTelefono($tc,$tt,$tce){
		$this->telefono->editar($tc,$tt,$tce);
	}	
	function editarNombre($x){
		if($x != $this->getNombre()){
			$this->setNombre($x);
			new Conexion("UPDATE sucursales SET nombre='".$this->getNombre()."' where id_sucursal='".$this->getId()."'");
		}
	}
	function editarPrefijo($x){
		if($x != $this->getPrefijo()){
			$this->setPrefijo($x);
			new Conexion("UPDATE sucursales SET prefijo='".$this->getPrefijo()."' where id_sucursal='".$this->getId()."'");
		}
	}
	function editarActivo($x){
		if($x != $this->getActivo()){
			$this->setActivo($x);
			new Conexion("UPDATE sucursales SET activo=".$this->getActivo()." where id_sucursal='".$this->getId()."'");
		}
	}
	
	
	
	
	function listarSelect()
	{
		$query= "select * from sucursales where activo=1";
		$con=new Conexion();
		$con->ejecutar($query." order by nombre ;");
			
		$respuesta="{numFilas:'".$con->numFilasResultado()."',
			data: [";
		
		#le vamos concatenando a la respuesta cada opcion
		while($con->traerFilaPorNombre())
			$respuesta.= "{nombre:'".$con->get("nombre")."',ids:'".$con->get("id_sucursal")."'},";
		
		#si hay almenos una fila, nos queda una coma al final. Hay que quitarla
		if(!$con->vacio())
			$respuesta = substr($respuesta,0,strlen($respuesta)-1);
		
		$respuesta.= "]}";
		
		#imprimir el resultado
		return $respuesta;
		
	}
	function listarLabel()
	{
		$query= "select * from sucursales where activo=1";
		$con=new Conexion();
		$con->ejecutar($query." order by nombre ;");
			
		$respuesta="{success:true,
			data: [";
		
		#le vamos concatenando a la respuesta cada opcion
		while($con->traerFilaPorNombre()) 
		{
			$o = array(
				"boxLabel"=> $con->get("nombre"),
				"name"=> "cbU_".$con->get("id_sucursal"),
				"inputValue"=> 'on',
			);
			if($this->usuario)
				$o["checked"]=$this->usuario->tieneSucursal($con->get("id_sucursal"));
				
			$respuesta.= json_encode($o).",";
		}
			#echo $this->conexion->get("login")." - ";
		
		#si hay almenos una fila, nos queda una coma al final. Hay que quitarla
		if(!$con->vacio())
			$respuesta = substr($respuesta,0,strlen($respuesta)-1);
		
		$respuesta.= "]}";
		#imprimir el resultado
		return $respuesta;
	}
	
	
	function getMarcoHTML(){
		$e= '<div class="udmarco"><div class="ud_mdetalle"><div class="ud_ndetalle">'.$this->getNombre().'</div><div class="ud_ddetalle">'.$this->direccion->toString().'</div><div class="ud_ttdetalle"><img src="img/telefono.png" class="udfon"><div class="ud_tdetalle">'.$this->telefono->toString().'</div></div></div></div>';
		return str_replace('"','\"',$e);
	}
	function getMarcoHTMLExt(){
		if(trim($this->telefono->toString())!="")
			$r='<div class="ud_ttdetalle"><img src="img/telefono.png" class="udfont"><div class="ud_tdetallet">'.$this->telefono->toString().'</div><div style="clear:both;"></div>';

		$e='<div class="udmarcot"><div class="ud_mdetallet"><div class="ud_ndetallet">'.$this->getNombre().'</div><div class="ud_ddetallet">'.$this->direccion->toString().'</div></div>'.$r.'</div></div>';
		return str_replace('"','\"',$e);
	}

//	function getMarcoHTMLExt(){
	//	$e='<div class="udmarcot"><div class="ud_mdetallet"><div class="ud_ndetallet">'.$this->getNombre().'</div><div class="ud_ddetallet">'.$this->direccion->toString().'</div></div><div class="ud_ttdetalle"><img src="img/telefono.png" class="udfont"><div class="ud_tdetallet">'.$this->telefono->toString().'</div><div style="clear:both;"></div></div></div>';
		//return str_replace('"','\"',$e);
	//}
	
	function toGrid()
	{
		$o = array(
			"id"=> $this->getId(),
			"datos"=> $this->getMarcoHTMLExt()//;//.", ".$this->getNombres(),
//			"direccion"=> $this->direccion->toString(),
	//		"telefono"=> $this->telefono->toString(),
		);
		return $o;
	}
	
	function listar($pagina,$parametros)
	{
		$query="select * from sucursales where activo=1";
		$con=new Conexion();
		
		$con->ejecutar($query);
		
		$respuesta=array("numFilas"=>$con->numFilasResultado());
			
		$con->ejecutar($query." limit ".(($pagina-1)*PAGINA_CUANTOS).",".PAGINA_CUANTOS.";");
			
		while($con->traerFilaPorNombre()) {
			$this->setId($con->get("id_sucursal"));
			$this->cargar();
			$respuesta["data"][count($respuesta["data"])]= $this->toGrid();#esto es como un push($this->toGrid())
	    }
		
		#imprimir el resultado
		return str_replace("\\\\\\", "\\", json_encode($respuesta));		
	}

}
?>
